#!/bin/bash

# 文件名：enable_gnome_automount.sh
# 功能说明：
# 本脚本用于启用 GNOME 桌面环境的自动挂载功能，允许系统在检测到可移动存储设备时自动挂载并打开文件管理器。
#
# 主要流程：
# 1. 修改 GNOME 配置，启用自动挂载（automount）和自动打开（automount-open）。
# 2. 提示用户选择一种方式使设置生效（注销、重启 GNOME 或重启计算机）。
# 3. 提供交互选项，允许用户立即注销以应用更改。
#
# 注意事项：
# - 需要 GNOME 桌面环境支持 `gsettings` 命令。
# - 可能需要注销或重启计算机才能完全生效。
# - 运行本脚本时请确保用户具有足够的权限执行 `gsettings` 命令。


set -eo pipefail

SCHEMA="org.gnome.desktop.media-handling"
SETTINGS=("automount" "automount-open")

apply_settings() {
    for setting in "${SETTINGS[@]}"; do
        if ! gsettings set "$SCHEMA" "$setting" true; then
            echo "❌ 配置失败: $setting" >&2
            exit 1
        fi
        echo "✅ 已启用: $setting"
    done
}

show_activation_methods() {
    cat <<EOF

ℹ️  生效方法（任选其一）：
1. 立即注销（推荐）：
   gnome-session-quit --no-prompt

2. 重启计算机（彻底生效）：
   sudo reboot

3. 快速重启 GNOME（图形界面操作）：
   Alt+F2 → 输入 r → 回车
EOF
}

main() {
    echo "正在启用 GNOME 自动挂载功能..."
    apply_settings

    echo -e "\n✅ 配置成功！建议立即注销使设置生效"
    read -p "➜ 是否立即注销并重新登录？[y/N] " choice

    case "$choice" in
        y|Y)
            echo "正在启动注销进程..."
            gnome-session-quit --no-prompt
            ;;
        *)
            echo -e "\n您可以选择以下方式使设置生效："
            show_activation_methods
            ;;
    esac
}

trap 'echo -e "\n❌ 操作被中断"; exit 2' INT TERM

main
